<!-- 
    1.重要语法
    Promise(excutor)构造函数
    Promise.prototype.then方法

    2.基本编码流程
     1)创建promise对象(pending状态)，指定执行器函数
     2)在执行函数中启动异步任务
     3)根据结果做不同处理
       如果成功了,调用resolved(),指定成功的value,变为resolved状态
       如果失败了,调用rejectd(),指定失败的reason,变成rejected状态

    4)给promise指定成功或失败的回调函数来获取成功的value或失败的reason

   3.promise对象的状态
    1)三个状态
        pedding:为确定的，起始时的状态
        resolved:解决/成功的,调用resolved()后的状态
        rejected:拒绝/失败的,调用reject()后的状态
    
    2)2种状态
       pedding===>resolved
       pending===>rejected
    3)状态只能改变一次
 -->
<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>

<body>
    <script>
        // 创建promise对象(pending状态)，指定执行器函数

        new Promise((resolve, reject) => {
            // 在执行函数中启动异步任务
            setInterval(() => {
                const time = Date.now()
                if (time % 2 === 1) {
                    // 如果成功了,调用resolved(),指定成功的value,变为resolved状态
                    resolve('奇数成功了' + time)
                } else {
                    // 如果失败了,调用rejectd(),指定失败的reason,变成rejected状态
                    reject('偶数失败了' + time)
                }
            }, 1000)
        }).then(
            // 给promise指定成功或失败的回调函数来获取成功的value或失败的reason
            value => console.log('onResolve', value),
            reason => console.log('onReject', reason)

        )
    </script>
</body>

</html>